package 单例设计模式_3;

/**
 * @Auther:云尚学Java
 * </hr>
 * 简单的单例设计模式开始 只有唯一一个实例的存在，不能再多了，
 * 宇宙 系统 对象 实例
 * </hr>
 * 类中空空如也，
 */
public class God {
    /**
     * 2.God类里面封装一个God
     */
    static God god;//自有永有的神单例
    /**
     * 1.保证任何人都不能去创造神的实例
     * <p></p>
     * 否则：new God() 不写构造方法 默认存在 改成私有的private
     * 神可以是创造自己，但别人不能
     */
    private God(){
        /**
         * static final
         */
    }
    /**
     * 4.不需要实例化就能运行的入口 main方法
     * 单词Instance(例子，实例)
     */
    public static God getInstance(){//庙是开放的不用排队就能进入
        //如果头柱香未产生，这批人进入堂内进行排队
        if(god==null){
            synchronized (God.class){
                //单词synchronized同步的
                if(god==null){//只有头香造了神，其它香的白排队了
                    god=new God();

                }
            }
        }
        //此处头柱香产生后不必再排队
        return god;
    }

}
